// src/mock/chartData.js
import Mock from 'mockjs'
import { successResponse } from '../utils/response';



// 销售数据 - 柱状图
export const mockSalesData = () => {
  // 更真实的产品类别
  const productCategories = [
    '智能手机', '笔记本电脑', '平板电脑', '智能手表', 
    '无线耳机', '智能家居', '数码相机', '游戏主机'
  ]
  
  // 更真实的月份数据
  const months = ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']
  
  return Mock.mock({
    categories: months.slice(0, 6), // 只取前6个月，更真实
    series: [
      {
        name: '线上销售额',
        data: Array(6).fill(0).map(() => Mock.mock('@integer(500, 2000)'))
      },
      {
        name: '线下销售额', 
        data: Array(6).fill(0).map(() => Mock.mock('@integer(300, 1500)'))
      }
    ]
  })
}

Mock.mock('/api/chart/salesTrend', 'get',()=>successResponse(mockSalesData()))

// 用户增长 - 折线图
export const mockUserGrowthData = () => {
  const months = ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']
  return Mock.mock({
    categories: months,
    'series|1-2': [{
      'name': '@ctitle(2,4)',
      'data|12': ['@integer(500, 5000)']
    }]
  })
}

Mock.mock('/api/chart/userGrowsData', 'get' ,()=>successResponse(mockUserGrowthData()))

// 访问来源 - 饼图
// 修正后的访问来源数据 - 饼图
export const mockTrafficSourceData = () => {
  return {
    series: [{
      name: '访问来源',
      data: [
        { name: '直接访问', value: Mock.mock('@integer(1500, 3000)') },
        { name: '搜索引擎', value: Mock.mock('@integer(2500, 5000)') },
        { name: '社交媒体', value: Mock.mock('@integer(800, 2000)') },
        { name: '邮件营销', value: Mock.mock('@integer(500, 1500)') },
        { name: '广告投放', value: Mock.mock('@integer(1000, 2500)') },
        { name: '合作伙伴', value: Mock.mock('@integer(300, 1000)') }
      ]
    }]
  }
}

Mock.mock('/api/chart/trafficSourceData', 'get' ,()=>successResponse(mockTrafficSourceData()))

// 性能指标 - 雷达图
export const mockPerformanceDataRealistic = () => {
  const baseScore = Mock.mock('@integer(60, 85)') // 基础分数，让各项指标有一定相关性
  
  return {
    indicators: [
      { name: '销售业绩', max: 100 },
      { name: '用户增长', max: 100 },
      { name: '运营效率', max: 100 },
      { name: '产品质量', max: 100 },
      { name: '客户服务', max: 100 },
      { name: '技术创新', max: 100 }
    ],
    series: [{
      name: '综合评分',
      data: [
        baseScore + Mock.mock('@integer(-10, 10)'),  // 销售业绩
        baseScore + Mock.mock('@integer(-15, 15)'),  // 用户增长
        baseScore + Mock.mock('@integer(-8, 12)'),   // 运营效率
        baseScore + Mock.mock('@integer(-5, 10)'),   // 产品质量
        baseScore + Mock.mock('@integer(-12, 8)'),   // 客户服务
        baseScore + Mock.mock('@integer(-10, 15)')   // 技术创新
      ].map(score => Math.max(0, Math.min(100, score))) // 确保在0-100范围内
    }]
  }
}


Mock.mock('/api/chart/performanceData', 'get' ,()=>successResponse(mockPerformanceDataRealistic()))

// 产品分布 - 饼图
export const mockProductDistributionData = () => {
  return Mock.mock({
    series: [{
      name: '产品分布',
      'data|4-6': [{
        'name': '@ctitle(3,6)',
        'value': '@integer(200, 2000)'
      }]
    }]
  })
}

// 转化率趋势 - 折线图
export const mockConversionTrendData = () => {
  const weeks = ['第1周', '第2周', '第3周', '第4周', '第5周', '第6周', '第7周', '第8周']
  return Mock.mock({
    categories: weeks,
    series: [{
      name: '转化率',
      'data|8': ['@float(1, 20, 1, 1)'],
      areaStyle: true
    }]
  })
}

// 区域销售 - 柱状图
export const mockRegionSalesData = () => {
  const regions = ['华东', '华南', '华北', '华中', '西南', '西北', '东北']
  return Mock.mock({
    categories: regions,
    'series|2': [{
      'name': '@ctitle(2,4)',
      'data|7': ['@integer(500, 3000)']
    }]
  })
}

Mock.mock('/api/chart/regionSalesData', 'get' ,()=>successResponse(mockRegionSalesData()))

// 适配你现有表格组件的Mock数据
export const mockTableDataForComponent = (total = 150) => {
  // 常见姓名池
  const names = [
    '张伟', '王芳', '李娜', '刘洋', '陈静', '杨勇', '黄磊', '周涛', 
    '吴刚', '郑洁', '孙悦', '马超', '朱婷', '胡军', '林峰', '郭靖',
    '何洁', '高强', '罗永', '梁爽', '宋佳', '谢娜', '唐嫣', '韩雪',
    '董洁', '徐静', '曹阳', '袁泉', '邓超', '许晴'
  ]
  
  // 常见地址池
  const addresses = [
    '北京市朝阳区建国门外大街1号',
    '上海市浦东新区陆家嘴环路1000号',
    '广州市天河区珠江新城花城大道68号',
    '深圳市南山区深南大道10000号',
    '杭州市西湖区文三路569号',
    '成都市武侯区人民南路四段88号',
    '武汉市江汉区建设大道568号',
    '南京市鼓楼区中山路188号',
    '西安市雁塔区长安中路123号',
    '重庆市渝中区解放碑步行街26号',
    '苏州市工业园区金鸡湖大道88号',
    '长沙市芙蓉区五一大道368号',
    '天津市和平区南京路189号',
    '青岛市市南区香港中路76号',
    '大连市中山区人民路23号'
  ]
  
  const data = []
  const startDate = new Date(2023, 0, 1) // 从2023年1月1日开始
  
  for (let i = 0; i < total; i++) {
    // 生成递增日期，更真实的时间序列
    const currentDate = new Date(startDate)
    currentDate.setDate(startDate.getDate() + i)
    const formattedDate = currentDate.toISOString().split('T')[0]
    
    // 从池中随机选择，避免完全随机的不自然
    const nameIndex = Math.floor(Math.random() * names.length)
    const addressIndex = Math.floor(Math.random() * addresses.length)
    
    data.push({
      date: formattedDate,
      name: names[nameIndex],
      address: addresses[addressIndex]
    })
  }
  
  return data
}

// 直接返回所有数据供前端分页
export const getAllTableData = () => {
  return mockTableDataForComponent(150)
}

Mock.mock('/api/table/all-data', 'get', () => {
  return successResponse(getAllTableData())
})